package com.example.lib.io;

/**
 * MyReader   //专门用于读取数据的类
 *      |--MyTextReader
 *          |--MyBufferTextReader
 *      |--MyMediaReader
 *          |--MyBufferMediaReader
 *      |--MyDataReader
 *          |--MyBufferDataReader
 *
 * 问题来了：再多几个子类，还多多几个buffer的子子类。
 *          继承体系虽然能用，但是 1.扩展性不好。2.臃肿，复杂。
 * 所以需要优化。
 *
 * class MyBufferReader{
 *     MyBufferReader(MyTextReader text){}
 *     MyBufferReader(MyMediaReader media){}
 *     MyBufferReader(MyDataReader data){}
 * }
 * 上面这个类扩展性很差。
 * 找到其参数的共同类型，通过多态的形式，可以提高扩展性。
 *
 * class MyBufferReader extends MyReader{
 *     MyBufferReader(MyReader r){}
 * }
 *
 * MyReader   //专门用于读取数据的类
 *      |--MyTextReader
 *      |--MyMediaReader
 *      |--MyDataReader
 *      |--MyBufferReader
 *
 * 装饰模式比继承要灵活，避免了继承体系臃肿。
 * 而且降低了类与类之间的关系。
 *
 * 装饰类因为增强已有对象，具备的功能和已有的是相同的，只不过提供了更强功能。
 * 所以装饰类和被装饰类通常都是属于一个体系中的。
 */

public class n_io_decorator_extend_19_07 {
}
